查看原文
其他

怎样让国产芯片性能超越Intel

蒋步星 数据蒋堂 2023-02-25

做一次标题党,其实我们做软件的当然没办法改变芯片的性能,也不可能真地让国产芯片超越Intel。

这个话题从去年做过的一次性能测试说起,先看测试结果:


这些题目原本是某大用户在选型数据库时用于评测性能的。给定了数据(结构和规模)和SQL,在同样的硬件环境下让各家数据库都跑一下,看谁的速度最快。

我们从中选择了几个耗时最长的SQL,再做了少量补充。然后准备了两组集群,一组用Intel芯片,另一组用国产飞腾芯片,安装好分布式数据库和集算器,并在数据库中生成测试数据。

1.用SQL在数据库中执行,记录时长;

2.将SQL改写成SPL(这有些工作量,涉及到算法更改),但仍读取数据库中数据计算,记录时长;

3.将数据导出到文件,使用集算器特有的组表格式存储,再改写SPL(更换数据源,使用组表数据源会比使用数据库源更简单)计算,记录时长;

然后就得到了上面那个测试结果表。

还有几点说明:

1.我们刻意选择了一些在原评测中耗时最长的SQL(几乎都>1小时),所以这里看到的数据库上跑SQL的性能都较差;原测试中也有几条能跑得很快的SQL,但这里没有选用。

2.原评测中要求只要返回第一批数据即可,不需要返回全部结果集,这里延用了此规则,但我们补充了一些题目,在其中确保必须把涉及数据全部遍历到才可能计算出结果(比如增加GROUP BY和ORDER BY),这样可以更有效地测试遍历性能。

3.飞腾上数据库的运算性能和Intel上差不多,也不是关注重点,没有再列出了。

4.前两题用SPL读数据库的性能已经非常好,所以没再做读文件的测试了。


从测试结果可以看出:

1.在Intel机上,用SPL读文件的计算性能远远超过数据库用SQL的计算性能,即使用SPL读数据库运算也常常能获得比在数据库中用SQL好得多的性能,这还是在付出了数据库IO成本的代价之后的结果。

2.在飞腾上的SPL读文件的计算性能也远远超过在Intel上数据库的计算性能,在飞腾上用SPL读数据库也比Intel上的纯数据库计算有优势。

那么,SPL是怎么做到高性能的?

就是我们常说的办法,SPL可以采用更高性能的算法,而SQL不可以。

这些题目都不是非常简单的两三行SQL,基本都带有子查询或较多表的JOIN。在充分理解数据特征之后,我们可以设计出更低成本的算法,把运算复杂度降低一个到几个数量级。在这里主要是对有序的利用,SPL的理论体系是基于有序集合的,可以充分利用数据有序的特征来提高性能,而SQL就很难利用这一点,即使知道有好办法优化也无法实施。

这篇文章里不合适解释每个问题的算法了,我们以后会写文章再披露详细的测试过程与算法说明。这里有一篇对前两题的算法解析 http://c.raqsoft.com.cn/article/1545662863743?r=279400248。(其中有个SPL跑得也不快的场景就没有写到测试结果表里了


现在可以解释标题中说的怎样让国产芯片性能超越Intel了,芯片本身的性能并没有超越,超越的是算法。具体来说,就是用SPL在低性能芯片上跑高性能算法,能超越SQL在高性能芯片上跑低性能算法。而用SPL在Intel芯片上跑高性能算法,当然还能获得比飞腾更好的性能。

就我们的工作经验来看,绝大多数的数据仓库运算都可以获得这种优化。只要写出的SQL够长够复杂,基本都有不少可优化的环节。如果我们用SPL来重构数据仓库,就可能把现有运算性能再提高一个数量级。


这个测试结果表上还可以看出两个结论:

1.读数据库显然比读文件的性能要差很多。这是因为数据库IO成本很高,而且很难做高效的压缩。要想获得最高性能,尽量不要把数据存到数据库中。象我们在另一篇文章《数据库的封闭性》中说的,未来的数据仓库不必要有“库”这么个形式。

2.飞腾上SPL的性能并没有比Intel差出数量级(传说飞腾落后5年,按摩尔定律,差不多有一个数量级)。数据密集型的计算性能,起决定性作用的常常是硬盘和内存,而不是CPU。我不知道这组设备的飞腾芯片到底和Intel差多少,但即使有差距,也不会造成整体性能上数量级的下降,做好存储方面的优化要比CPU重要。


数据蒋堂 第二年原创文章

中国报表漫谈

内存数据集产生的隐性成本

应对报表没完没了的五个步骤

“后半”有序的分组

前半有序的大数据排序

- 如何将数据热导出到文件

时序数据从分表到分库

- BI系统的前置计算

性能优化是个手艺活

数据分布背后的逻辑

- 从一道招聘考题谈起

为什么我们需要C程序员

报表工具的SQL植入风险

内置的数据无法实现高性能

怎样生成有关联的测试数据

遍历复用

- 一些数据压缩手段

用HBase做高性能键值查询?

BI系统中容易被忽视的数据源功能

这个产品能支持多大数据量?

最简单的大数据性能估算方法

大清单报表应当怎么做?

大清单报表的打印?

大数据技术的4个E

做基础软件很悲壮?

做基础软件要投入很多钱?

- 国产操作系统还能怎么做?

- 国产数据库通通都没戏!

- 人工智能中的“人工”

- 存储和计算技术的选择

- 区块链技术的一些疑问

- 数据蒋堂新一年

 



润乾软件创始人、首席科学家

中国大数据产业生态联盟 专家委员

1989年国际奥林匹克数学竞赛团体冠军成员,个人金牌

清华大学计算机硕士

发明了非线性报表模型,并著《非线性报表模型原理》

创建离散数据集模型,颠覆四十年关系代数理论体系!

2016、2017年中国软件和信息服务业 • 十大领军人物

2017年度中国数据大工匠

数据领域专业技术讲堂《数据蒋堂》创办者

点“阅读原文”,在乾学院与作者交流

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存